const express = require('express');
const path = require('path');
const { createProxyMiddleware } = require('http-proxy-middleware');

const app = express();
const PORT = process.env.PORT || 80;

// 静态文件服务
app.use(express.static(path.join(__dirname, 'dist')));

// API 代理 - 将 /api 请求代理到后端
app.use('/api', createProxyMiddleware({
  target: 'http://47.106.88.20:8080',
  changeOrigin: true,
  pathRewrite: {
    '^/api': '/api'
  },
  onError: (err, req, res) => {
    console.error('Proxy error:', err);
    res.status(500).json({ error: 'API 服务不可用' });
  },
  onProxyReq: (proxyReq, req, res) => {
    console.log('Proxying request:', req.method, req.url);
  },
  onProxyRes: (proxyRes, req, res) => {
    console.log('Proxy response:', proxyRes.statusCode, req.url);
  }
}));

// 处理 SPA 路由 - 所有非 API 请求都返回 index.html
app.get('*', (req, res) => {
  // 如果是 API 请求，不处理
  if (req.path.startsWith('/api/')) {
    return res.status(404).json({ error: 'API 路径不存在' });
  }
  
  // 返回 index.html 让前端路由处理
  res.sendFile(path.join(__dirname, 'dist', 'index.html'));
});

// 错误处理中间件
app.use((err, req, res, next) => {
  console.error('Server error:', err);
  res.status(500).json({ error: '服务器内部错误' });
});

app.listen(PORT, () => {
  console.log(`前端服务器运行在端口 ${PORT}`);
  console.log(`访问地址: http://47.106.88.20:${PORT}`);
  console.log(`API 代理到: http://47.106.88.20:8080`);
});
